#pragma once

#include "bitmap_fonts.hpp"

const bitmap::font_t font6 {
  .height = 6,
  .max_width = 6,
  .widths = {
    3, 1, 3, 5, 5, 5, 6, 1, 2, 2, 3, 3, 1, 3, 1, 3,
    5, 2, 4, 4, 5, 4, 5, 5, 5, 5, 1, 1, 3, 3, 3, 4,
    6, 5, 5, 4, 5, 4, 4, 5, 4, 3, 4, 4, 4, 5, 5, 5,
    5, 5, 5, 4, 5, 5, 5, 5, 4, 4, 4, 2, 3, 2, 3, 3,
    2, 5, 5, 4, 5, 4, 4, 5, 4, 3, 4, 4, 4, 5, 5, 5,
    5, 5, 5, 4, 5, 5, 5, 5, 4, 4, 4, 3, 1, 3, 3, 1,
//  Extra
//  Æ  Þ  ß  æ  þ  £  ¥  ©  °
    5, 5, 4, 5, 5, 4, 4, 4, 3
  },
  .data = {
    0x00,0x00,0x00,0x00,0x00,0x00, //
    0x2e,0x00,0x00,0x00,0x00,0x00, // !
    0x06,0x00,0x06,0x00,0x00,0x00, // "
    0x14,0x3e,0x14,0x3e,0x14,0x00, // #
    0x04,0x2a,0x3e,0x2a,0x10,0x00, // $
    0x22,0x10,0x08,0x04,0x22,0x00, // %
    0x14,0x2a,0x2a,0x2c,0x10,0x28, // &
    0x06,0x00,0x00,0x00,0x00,0x00, // '
    0x1c,0x22,0x00,0x00,0x00,0x00, // (
    0x22,0x1c,0x00,0x00,0x00,0x00, // )
    0x14,0x08,0x14,0x00,0x00,0x00, // *
    0x08,0x1c,0x08,0x00,0x00,0x00, // +
    0x60,0x00,0x00,0x00,0x00,0x00, // ,
    0x08,0x08,0x08,0x00,0x00,0x00, // -
    0x20,0x00,0x00,0x00,0x00,0x00, // .
    0x30,0x0c,0x02,0x00,0x00,0x00, // /
    0x1c,0x22,0x22,0x22,0x1e,0x00, // 0
    0x02,0x3e,0x00,0x00,0x00,0x00, // 1
    0x32,0x2a,0x2a,0x24,0x00,0x00, // 2
    0x2a,0x2a,0x2a,0x16,0x00,0x00, // 3
    0x0e,0x10,0x10,0x3e,0x10,0x00, // 4
    0x2e,0x2a,0x2a,0x12,0x00,0x00, // 5
    0x3c,0x2a,0x2a,0x2a,0x12,0x00, // 6
    0x06,0x02,0x22,0x12,0x0e,0x00, // 7
    0x14,0x2a,0x2a,0x2a,0x16,0x00, // 8
    0x04,0x2a,0x2a,0x2a,0x1e,0x00, // 9
    0x24,0x00,0x00,0x00,0x00,0x00, // :
    0x64,0x00,0x00,0x00,0x00,0x00, // ;
    0x08,0x14,0x22,0x00,0x00,0x00, // <
    0x14,0x14,0x14,0x00,0x00,0x00, // =
    0x22,0x14,0x08,0x00,0x00,0x00, // >
    0x02,0x2a,0x0a,0x04,0x00,0x00, // ?
    0x3c,0x02,0x1a,0x2a,0x22,0x1e, // @
    0x3c,0x12,0x12,0x12,0x3e,0x00, // A
    0x3c,0x2a,0x2a,0x2e,0x10,0x00, // B
    0x1c,0x22,0x22,0x22,0x00,0x00, // C
    0x3c,0x22,0x22,0x22,0x1c,0x00, // D
    0x3c,0x2a,0x2a,0x2a,0x00,0x00, // E
    0x3c,0x12,0x12,0x12,0x00,0x00, // F
    0x3c,0x22,0x22,0x2a,0x1a,0x00, // G
    0x3e,0x08,0x08,0x3e,0x00,0x00, // H
    0x22,0x3e,0x22,0x00,0x00,0x00, // I
    0x30,0x22,0x22,0x1e,0x00,0x00, // J
    0x3e,0x08,0x0c,0x32,0x00,0x00, // K
    0x3e,0x20,0x20,0x20,0x00,0x00, // L
    0x3c,0x02,0x3c,0x02,0x3c,0x00, // M
    0x3c,0x02,0x02,0x02,0x3e,0x00, // N
    0x1c,0x22,0x22,0x22,0x1e,0x00, // O
    0x3c,0x12,0x12,0x12,0x0e,0x00, // P
    0x1c,0x22,0x22,0x62,0x1e,0x00, // Q
    0x3c,0x12,0x12,0x32,0x0e,0x00, // R
    0x24,0x2a,0x2a,0x12,0x00,0x00, // S
    0x02,0x02,0x3e,0x02,0x02,0x00, // T
    0x1e,0x20,0x20,0x20,0x1e,0x00, // U
    0x0e,0x10,0x20,0x10,0x0e,0x00, // V
    0x3e,0x20,0x1e,0x20,0x1e,0x00, // W
    0x36,0x08,0x08,0x36,0x00,0x00, // X
    0x26,0x28,0x28,0x1e,0x00,0x00, // Y
    0x32,0x2a,0x2a,0x26,0x00,0x00, // Z
    0x3e,0x22,0x00,0x00,0x00,0x00, // [
    0x02,0x0c,0x30,0x00,0x00,0x00, // "\"
    0x22,0x3e,0x00,0x00,0x00,0x00, // ]
    0x04,0x02,0x04,0x00,0x00,0x00, // ^
    0x20,0x20,0x20,0x00,0x00,0x00, // _
    0x02,0x04,0x00,0x00,0x00,0x00, // `
    0x3c,0x12,0x12,0x12,0x3e,0x00, // a
    0x3c,0x2a,0x2a,0x2e,0x10,0x00, // b
    0x1c,0x22,0x22,0x22,0x00,0x00, // c
    0x3c,0x22,0x22,0x22,0x1c,0x00, // d
    0x3c,0x2a,0x2a,0x2a,0x00,0x00, // e
    0x3c,0x12,0x12,0x12,0x00,0x00, // f
    0x3c,0x22,0x22,0x2a,0x1a,0x00, // g
    0x3e,0x08,0x08,0x3e,0x00,0x00, // h
    0x22,0x3e,0x22,0x00,0x00,0x00, // i
    0x30,0x22,0x22,0x1e,0x00,0x00, // j
    0x3e,0x08,0x0c,0x32,0x00,0x00, // k
    0x3e,0x20,0x20,0x20,0x00,0x00, // l
    0x3c,0x02,0x3c,0x02,0x3e,0x00, // m
    0x3c,0x02,0x02,0x02,0x3e,0x00, // n
    0x1c,0x22,0x22,0x22,0x1e,0x00, // o
    0x3c,0x12,0x12,0x12,0x0e,0x00, // p
    0x1c,0x22,0x22,0x62,0x1e,0x00, // q
    0x3c,0x12,0x12,0x32,0x0e,0x00, // r
    0x24,0x2a,0x2a,0x12,0x00,0x00, // s
    0x02,0x02,0x3e,0x02,0x02,0x00, // t
    0x1e,0x20,0x20,0x20,0x1e,0x00, // u
    0x0e,0x10,0x20,0x10,0x0e,0x00, // v
    0x3e,0x20,0x1e,0x20,0x1e,0x00, // w
    0x36,0x08,0x08,0x36,0x00,0x00, // x
    0x26,0x28,0x28,0x1e,0x00,0x00, // y
    0x32,0x2a,0x2a,0x26,0x00,0x00, // z
    0x08,0x3e,0x22,0x00,0x00,0x00, // {
    0x3e,0x00,0x00,0x00,0x00,0x00, // |
    0x22,0x3e,0x08,0x00,0x00,0x00, // }
    0x04,0x02,0x02,0x00,0x00,0x00, // ~
    0x00,0x00,0x00,0x00,0x00,0x00,
    // Extra
    0x3c,0x12,0x3c,0x2a,0x2a,0x00, // Æ
    0x3f,0x12,0x12,0x12,0x0e,0x00, // Þ
    0x3e,0x0a,0x2a,0x34,0x00,0x00, // ß
    0x3c,0x12,0x3c,0x2a,0x2a,0x00, // æ
    0x3f,0x12,0x12,0x12,0x0e,0x00, // þ
    0x08,0x3c,0x2a,0x2a,0x00,0x00, // £
    0x26,0x28,0x28,0x1e,0x00,0x00, // ¥s
    0x1c,0x22,0x22,0x22,0x00,0x00, // ©
    0x02,0x05,0x02,0x00,0x00,0x00, // °
    // Accents + Offsets
    // All chars are shifted 8px down into a 32 pixel canvas for combining with accents.
    // Accent shift values (the first two numbers in each line below) move the accent down to meet them.
    // These are the shift values for lower and UPPER case letters respectively.
    6,6,   0x00,0x00,0x01,0x02,0x00,0x00, // Grave
    6,6,   0x00,0x00,0x02,0x01,0x00,0x00, // Acute
    6,6,   0x00,0x02,0x01,0x02,0x00,0x00, // Circumflex
    6,6,   0x00,0x01,0x02,0x01,0x02,0x00, // Tilde
    6,6,   0x00,0x01,0x00,0x01,0x00,0x00, // Diaresis
    6,6,   0x00,0x02,0x05,0x02,0x00,0x00, // Ring Above
    6,6,   0x00,0x40,0x20,0x10,0x00,0x00, // Stroke
    10,10, 0x00,0x00,0x28,0x10,0x00,0x00  // Cedilla
  }
};